查看原文
其他

Stata:各类盈余管理指标的Stata实现方法

Stata连享会 Stata连享会 2020-02-10

作者:王若溪 (中山大学)

Stata 连享会: 知乎 | 简书 | 码云 | CSDN

2019暑期Stata现场班 (连玉君+刘瑞明主讲)

特别说明

文中包含的链接在微信中无法生效。请点击本文底部左下角的【阅读原文】,转入本文【简书版】

盈余管理是公司金融和会计领域的一个重要话题。本文对目前文献中常用的盈余管理指标进行了梳理,并基于国泰安数据库中的变量,提供了这些指标在 Stata 中的实现方法。

目前的研究将普遍将盈余管理分为应计盈余管理和真实盈余管理。应计盈余管理基于权责发生制,针对会计处理,通过会计政策选择、应计项目调整和会计估计变更等方式来进行;真实盈余管理是通过改变企业真实生产经营活动来实现的。盈余管理的测量一直是重点研究方向,目前的方法多通过计算残差的方式来估算盈余管理的程度。

在盈余管理研究初期,许多学者聚焦于应计盈余管理,并提出了相应的测量模型。Healy (1985) 在研究分红计划时,最早提出了应计项目操纵的计算方式,Jones (1991) 提出了经典的Jones模型,发展了对操纵性应计项目估计的方法。之后国内外学者不断完善和发展对应计盈余管理测量。针对不同测算方式的准确度,黄梅和夏新平 (2009) 使用中国数据,对七种应计盈余管理计量方法进行了检验,发现分年度分行业计算的修正Jones模型在模型设定和检验能力方面表现更佳,并建议以此方法为主进行后续研究。

真实盈余管理的研究开始得相对较晚,国内外普遍使用Roychowdhury (2006) 提出的方法,从销售操纵、酌量性费用和过度生产三个方面进行分析,计算异常现金流、异常生产成本和异常酌量性费用。之后的学者多采用将三个指标加总的方式衡量真实盈余管理的整体程度。

本文将逐一介绍黄梅和夏新平 (2009) 总结的应计盈余管理测算方法和Roychowdhury (2006) 提出的真实盈余管理计算方法,参考文献的详细内容在文末列出。

应计盈余管理

1. 基本Jones模型

Jones (1991) 提出了经典的Jones模型,从营业收入变动和固定资产水平衡量企业应计利润的变动。具体模型如下:

其中,为滞后一期的总资产,为营业收入增量,为固定资产。通过该方程计算得到的残差即为应计盈余管理。 Jones (1991) 原文中提到的应计项目总额 计算方法如下:

黄梅和夏新平 (2009) 将定义为第t年营业利润减去第t年经营活动现金流量。

黄梅和夏新平 (2009) 文章中对应的 Stata 程序如下:

  1. * 根据国泰安数据库计算需要的指标


  2. clonevar A = a001000000 // 总资产

  3. clonevar EBXI = b001300000 // 营业利润

  4. clonevar cfo = c001000000 // 经营活动现金流净额


  5. gen acc = (EBXI - cfo)/L.A // 总应计项目,y

  6. gen invA = 1/L.A // 滞后一期的总资产的倒数, x1

  7. gen Dsale = D.b001101000/L.A // 营业收入的增量, x2

  8. gen PPE = a001212000/L.A // 固定资产净额/总资产, x3



  9. * 生成行业+年份变量,方便回归


  10. egen sic_year = group(sic year), label lname(sic_year) // sic 为行业分类,year为年度时间标识


  11. * 利用循环求残差,残差即为应计盈余管理DACC


  12. gen DACC = .

  13. forvalues i = 1/$N{

  14. qui reg acc invA Dsale PPE if (sic_year==`i'), nocons

  15. qui predict e if e(sample), res

  16. qui replace DACC = e if e(sample)

  17. drop e

  18. }

2. 修正Jones模型

Dechow等 (1995) 提出的修正Jones模型在Jones模型的基础上加入了应收账款的变动,具体模型如下:

其中,为应收账款变动。

对应的 Stata 程序如下:

  1. * 根据国泰安数据库计算需要的指标


  2. clonevar A = a001000000 // 总资产

  3. clonevar EBXI = b001300000 // 营业利润

  4. clonevar cfo = c001000000 // 经营活动现金流净额


  5. gen acc = (EBXI - cfo)/L.A // 总应计项目,y

  6. gen invA = 1/L.A // 滞后一期的总资产的倒数, x1

  7. gen Dsale = D.b001101000/L.A // 营业收入的增量

  8. gen DAR = D.a001111000/L.A // 应收账款的增量

  9. gen DS_DAR= Dsale - DAR // 营业收入的增量-应收账款的增量, x2

  10. gen PPE = a001212000/L.A // 固定资产净额, x3


  11. * 生成行业+年份变量,方便回归


  12. egen sic_year = group(sic year), label lname(sic_year) // sic 为行业分类,year为年度时间标识


  13. * 利用循环求残差,残差即为应计盈余管理DACC


  14. gen DACC = .

  15. forvalues i = 1/$N{

  16. qui reg acc invA DS_DAR PPE if (sic_year==`i'), nocons

  17. qui predict e if e(sample), res

  18. qui replace DACC = e if e(sample)

  19. drop e

  20. }

3. 无形资产Jones模型

陆建桥 (1999) 在修正Jones模型的基础上,进一步考虑了无形资产和其他长期资产的作用。具体模型如下:

其中,为无形资产和其他长期资产。

对应的 Stata 程序如下:

  1. * 根据国泰安数据库计算需要的指标


  2. clonevar A = a001000000 // 总资产

  3. clonevar EBXI = b001300000 // 营业利润

  4. clonevar cfo = c001000000 // 经营活动现金流净额


  5. gen acc = (EBXI - cfo)/L.A // 总应计项目,y

  6. gen invA = 1/L.A // 滞后一期的总资产的倒数, x1

  7. gen Dsale = D.b001101000/L.A // 营业收入的增量

  8. gen DAR = D.a001111000/L.A // 应收账款的增量

  9. gen DS_DAR= Dsale - DAR // 营业收入的增量-应收账款的增量, x2

  10. gen PPE = a001212000/L.A // 固定资产净额, x3

  11. gen IA = a001218000/L.A // 无形资产净额, x4


  12. * 生成行业+年份变量,方便回归


  13. egen sic_year = group(sic year), label lname(sic_year) // sic 为行业分类,year为年度时间标识


  14. * 利用循环求残差,残差即为应计盈余管理DACC


  15. gen DACC = .

  16. forvalues i = 1/$N{

  17. qui reg acc invA DS_DAR PPE IA if (sic_year==`i'), nocons

  18. qui predict e if e(sample), res

  19. qui replace DACC = e if e(sample)

  20. drop e

  21. }

4. 前瞻性修正Jones模型

Dechow等 (2003) 在修正Jones模型的基础上,对应收账款进行了调整,并加入滞后一期的总应计项目和销售增长率。具体模型如下:

其中, 为应收账款变化对主营业务收入变化的分行业回归的估计系数,=++,而 为未来一期的销售增长率。

对应的 Stata 程序如下:

  1. * 根据国泰安数据库计算需要的指标


  2. clonevar A = a001000000 // 总资产

  3. clonevar EBXI = b001300000 // 营业利润

  4. clonevar cfo = c001000000 // 经营活动现金流净额

  5. clonevar grrev = f081602c // 营业收入增长率


  6. gen acc = (EBXI - cfo)/L.A // 总应计项目,y

  7. gen invA = 1/L.A // 滞后一期的总资产的倒数, x1

  8. gen Dsale = D.b001101000/L.A // 营业收入的增量

  9. gen DAR = D.a001111000/L.A // 应收账款的增量

  10. gen PPE = a001212000/L.A // 固定资产净额, x3

  11. gen Lacc = L.acc // 滞后一期的应计项目总额,x4

  12. gen grrev = F.f081602c/L.A // 营业收入增长率,x5



  13. * 生成行业+年份变量,方便回归


  14. egen sic_year = group(sic year), label lname(sic_year) // sic 为行业分类,year为年度时间标识


  15. * 计算系数 k

  16. statsby,by(year sic) clear:reg DAR Dsale

  17. clonevar k=_b_Dsale // 回归得到系数 k

  18. save k.dta, clear


  19. * 将k.dta中的系数 k 匹配回原始数据

  20. merge 1:m year sic using k.dta

  21. drop _merge

  22. gen DS_kDAR = Dsale-(1-k)*DAR // 营业收入增量-(1-k)应收账款增量, x2


  23. * 利用循环求残差,残差即为应计盈余管理DACC


  24. gen DACC = .

  25. forvalues i = 1/$N{

  26. qui reg acc invA DA_kDAR PPE Lacc grrev if (sic_year==`i'), nocons

  27. qui predict e if e(sample), res

  28. qui replace DACC = e if e(sample)

  29. drop e

  30. }

5. 现金流量Jones模型

Dechow 和 Dichev (2002) 提出将滞后一期、当期和未来一期的经营性净现金流加入模型中,提出了如下的模型:

对应的 Stata 程序如下:

  1. * 根据国泰安数据库计算需要的指标


  2. clonevar A = a001000000 // 总资产

  3. clonevar EBXI = b001300000 // 营业利润

  4. clonevar cfo = c001000000 // 经营活动现金流净额


  5. gen acc = (EBXI - cfo)/L.A // 总应计项目,y

  6. gen Dsale = D.b001101000/L.A // 营业收入的增量, x1

  7. gen PPE = a001212000/L.A // 固定资产净额, x2

  8. gen Lcfo = L.c001000000/L.A // 滞后一期的经营性现金流净额, x3

  9. gen cfo = c001000000/L.A // 当期的经营性现金流净额, x4

  10. gen Fcfo = F.c001000000/L.A // 未来一期的经营性现金流净额, x5



  11. * 生成行业+年份变量,方便回归


  12. egen sic_year = group(sic year), label lname(sic_year) // sic 为行业分类,year为年度时间标识


  13. * 利用循环求残差,残差即为应计盈余管理DACC


  14. gen DACC = .

  15. forvalues i = 1/$N{

  16. qui reg acc Dsale PPE Lcfo cfo Fcfo if (sic_year==`i')

  17. qui predict e if e(sample), res

  18. qui replace DACC = e if e(sample)

  19. drop e

  20. }

6. 收益匹配Jones模型

Kothari等 (2002) 提出在传统的Jones模型中引入业绩变量 (ROA) 以控制业绩与企业应计之间的相关性,或为每一个样本企业找到一个业绩匹配的企业。这里介绍引入ROA的模型,Kothari等 (2002) 认为可以选择当期的ROA或滞后一期的ROA,黄梅和夏新平 (2009) 使用了当期的 ROA:

对应的 Stata 程序如下:

  1. * 根据国泰安数据库计算需要的指标


  2. clonevar A = a001000000 // 总资产

  3. clonevar EBXI = b001300000 // 营业利润

  4. clonevar cfo = c001000000 // 经营活动现金流净额


  5. gen acc = (EBXI - cfo)/L.A // 总应计项目,y

  6. gen invA = 1/L.A // 滞后一期的总资产的倒数, x1

  7. gen Dsale = D.b001101000/L.A // 营业收入的增量, x2

  8. gen PPE = a001212000/L.A // 固定资产净额, x3

  9. gen roa = f050201b/L.A // 当期的ROA, x4

  10. gen Lroa = L.f050201b/L.A // 滞后一期的ROA, x4 (可选)



  11. * 生成行业+年份变量,方便回归


  12. egen sic_year = group(sic year), label lname(sic_year) // sic 为行业分类,year为年度时间标识


  13. * 利用循环求残差,残差即为应计盈余管理DACC


  14. gen DACC = .

  15. forvalues i = 1/$N{

  16. qui reg acc invA Dsale PPE roa if (sic_year==`i') // 也可以使用滞后一期的ROA

  17. qui predict e if e(sample), res

  18. qui replace DACC = e if e(sample)

  19. drop e

  20. }

7. 非线性Jones模型

Ball和Shivakumar (2006) 提出,应计和业绩之间存在非线性相关,为了解决这一问题,在传统的Jones模型中加入表示虚拟变量,当小于零时,它等于1,反之则为零。具体模型如下:

对应的 Stata 程序如下:

  1. * 根据国泰安数据库计算需要的指标


  2. clonevar A = a001000000 // 总资产

  3. clonevar EBXI = b001300000 // 营业利润

  4. clonevar cfo = c001000000 // 经营活动现金流净额


  5. gen acc = (EBXI - cfo)/L.A // 总应计项目,y

  6. gen Dsale = D.b001101000/L.A // 营业收入的增量, x1

  7. gen PPE = a001212000/L.A // 固定资产净额, x2


  8. * 生成虚拟变量和交乘项


  9. gen dvar = . // 虚拟变量, x3

  10. replace dvar = 1 if cfo < 0

  11. replace dvar = 0 if cfo >= 0

  12. gen dvar_cfo = dvar*cfo/L.A // 交乘项, x4


  13. * 生成行业+年份变量,方便回归


  14. egen sic_year = group(sic year), label lname(sic_year) // sic 为行业分类,year为年度时间标识


  15. * 利用循环求残差,残差即为应计盈余管理DACC


  16. gen DACC = .

  17. forvalues i = 1/$N{

  18. qui reg acc Dsale PPE dvar dvar_cfo if (sic_year==`i') // 也可以使用滞后一期的ROA

  19. qui predict e if e(sample), res

  20. qui replace DACC = e if e(sample)

  21. drop e

  22. }

真实盈余管理

目前对真实盈余管理的计算普遍使用Roychowdhury (2006) ,通过分别计算经营活动的异常现金流、异常生产成本和异常酌量性费用得到真实盈余管理。具体计算方法如下:


Roychowdhury (2006) 将 生产成本定义为销售成本COGS和存货增量之和, 酌量性费用为研发费用 R&D、广告费用和SG&A之和,为营业收入 Sales。国内学者普遍使用销售费用和管理费用之和作为酌量性费用,如李增福等 (2011) 和李春涛等 (2016) 。

对应的 Stata 程序如下:

  1. * 根据国泰安数据库计算需要的指标


  2. clonevar A = a001000000 // 总资产

  3. gen cfo = c001000000/L.A // 经营活动现金流净额, y1

  4. gen cogs = b001209000/L.A // 销售费用/总资产

  5. gen Dinv = D.a001123000/L.A // 存货净额增量

  6. gen prod = cogs + Dinv // 生产成本, y2

  7. gen disexp= (b001209000+b001210000)/L.A // 酌量性费用,销售费用+管理费用, y3

  8. gen invA = 1/L.A // 滞后一期的总资产的倒数

  9. gen sale = b001101000/L.A // 营业收入

  10. gen Lsale = L.b001101000/L.A // 滞后一期的营业收入

  11. gen Dsale = D.b001101000/L.A // 营业收入增量

  12. gen LDsale= L.D.b001101000/L.A // 滞后一期的营业收入增量


  13. * 生成行业+年份变量,方便回归


  14. egen sic_year = group(sic year), label lname(sic_year) // sic 为行业分类,year为年度时间标识


  15. * 分别计算异常经营性净现金流、异常生产成本和异常酌量性费用


  16. *-CFO

  17. local y "cfo"

  18. global y `y'

  19. local x "invA sale Dsale"

  20. global x `x'

  21. cap drop AB`y'

  22. gen AB`y' = .

  23. forvalues i = 1/$N{

  24. qui reg `y' `x' if (sic_year==`i')

  25. qui predict e if e(sample), res

  26. qui replace AB`y' = e if e(sample)

  27. drop e

  28. }


  29. *-PROD

  30. qui tsset id year

  31. local y "prod"

  32. local x "invA sale Dsale LDsale"

  33. cap drop AB`y'

  34. gen AB`y' = .

  35. forvalues i = 1/$N{

  36. cap qui reg `y' `x' if (sic_year==`i')

  37. cap predict e if e(sample), res

  38. cap replace AB`y' = e if e(sample)

  39. cap drop e

  40. }


  41. *-DISEXP

  42. local y "disexp"

  43. local x "invA Lsale"

  44. cap drop AB`y'

  45. gen AB`y' = .

  46. forvalues i = 1/$N{

  47. qui reg `y' `x' if (sic_year==`i')

  48. qui predict e if e(sample), res

  49. qui replace AB`y' = e if e(sample)

  50. drop e

  51. }

当公司进行向上的真实盈余管理时,会通过扩大生产以降低单位产品的成本获得更高的单位产品利润,表现出存货成本的增加,即异常生产成本增加;通过加大折扣放松信用销售增加利润,会带来现金流的减少,即异常经营现金流净额减少;通过减少R&D支出、广告费用、管理费用等方式增加利润时,则会导致酌量性费用下降,许多学者在计算真实盈余管理总量时,采用如下方式进行加总:

参考文献

  • Healy P M. The effect of bonus schemes on accounting decisions[J]. Journal of Accounting & Economics, 1985, 7(1-3):85-107.

  • 黄梅, 夏新平. 操纵性应计利润模型检测盈余管理能力的实证分析[J]. 南开管理评论, 2009, 12(5):136-143.

  • Jones J J. Earnings Management During Import Relief Investigations[J]. Journal of Accounting Research, 1991, 29(2):193-228.

  • Dechow P M, Sloan R G, Hutton A P . Detecting Earnings Management[J]. The Accounting Review, 1995, 70(2): 193-225.

  • 陆建桥. 中国亏损上市公司盈余管理实证研究[J]. 会计研究, 1999(9):25-35.

  • Dechow P M , Richardson S A , Tuna I . Why Are Earnings Kinky? An Examination of the Earnings Management Explanation[J]. Review of Accounting Studies, 2003, 8(2-3):355-384.

  • Dechow P M , Dichev I D . The Quality of Accruals and Earnings: The Role of Accrual Estimation Errors[J]. Accounting Review, 2002, 77(Supplement):35-59.

  • Kothari S P , Leone A J , Wasley C E . Performance Matched Discretionary Accrual Measure[J]. SSRN Electronic Journal, 2002, 39(1):163-197.

  • Ball R , Shivakumar L . The Role of Accruals in Asymmetrically Timely Gain and Loss Recognition[J]. Social Science Electronic Publishing.

  • Roychowdhury S. Earnings management through real activities manipulation[J]. Journal of Accounting and Economics, 2006,42(3):335-370.

  • 李增福, 董志强, 连玉君. 应计项目盈余管理还是真实活动盈余管理?——基于我国2007年所得税改革的研究[J]. 管理世界, 2011, No.208(01):129-142.

  • 李春涛, 赵一, 徐欣, 李青原. 按下葫芦浮起瓢:分析师跟踪与盈余管理途径选择[J]. 金融研究, 2016(4).

关于我们

  • Stata 连享会(公众号:StataChina)】由中山大学连玉君老师团队创办,旨在定期与大家分享 Stata 应用的各种经验和技巧。

  • 公众号推文同步发布于 CSDN-Stata连享会 、简书-Stata连享会 和 知乎-连玉君Stata专栏。可以在上述网站中搜索关键词StataStata连享会后关注我们。

  • 点击推文底部【阅读原文】可以查看推文中的链接并下载相关资料。

  • Stata连享会 精彩推文1  || 精彩推文2

联系我们

  • 欢迎赐稿: 欢迎将您的文章或笔记投稿至Stata连享会(公众号: StataChina),我们会保留您的署名;录用稿件达五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。

  • 意见和资料: 欢迎您的宝贵意见,您也可以来信索取推文中提及的程序和数据。

  • 招募英才: 欢迎加入我们的团队,一起学习 Stata。合作编辑或撰写稿件五篇以上,即可免费获得 Stata 现场培训 (初级或高级选其一) 资格。

  • 联系邮件: StataChina@163.com

往期精彩推文


欢迎加入Stata连享会(公众号: StataChina)

一起学空间计量……

诚邀助教-2019暑期Stata现场班 (6.10截止)

2019暑期Stata现场班,7.17-26日,北京,连玉君+刘瑞明 主讲

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存